1、设置umask
	设置系统的umask值，在创建文件时文件的权限为(mode&~umask)
	mask: 新的umask值为mask&0777
	返回之前的umask
	mode_t umask(mode_t mask);
	
2、打开或创建文件
	打开或创建文件
	pathname: 要打开或创建的目标文件
	flags: 打开方式；
		O_RDONLY、O_WRONLY、O_RDWR 只读、只写、读写，这3个必须包含一个，且只能包含一个
		O_APPEND 追加
		O_CREAT 文件不存在则创建
		O_EXCL 文件存在则报错
		O_TRUNC 文件存在则清空
		O_NONBLOCK 采用非阻塞方式打开
	mode: 创建文件时新文件的属性
	打开成功返回描述符，失败返回-1
	int open(const char *pathname, int flags);
	int open(const char *pathname, int flags, mode_t mode);
2、写文件
	写文件
	fd: 文件描述符
	buf: 待写入的数据
	count: 待写入的字节数
	成功返回写入的字节数，失败返回-1
	ssize_t write(int fd, const void *buf, size_t count);
	写数据到文件的指定位置
	fd: 文件描述符
	buf: 待写入的数据
	count: 待写入的字节数
	offset: 相对于起始位置的偏移
	成功返回写入的字节数，失败返回-1
	ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
3、读文件
	读文件
	fd: 文件描述符
	buf: 读取数据的缓存
	count: 期望读取的字节数
	成功返回读取到的字节数，失败返回-1
	ssize_t read(int fd, void *buf, size_t count);
	从指定位置读文件
	fd: 文件描述符
	buf: 读取数据的缓存
	count: 期望读取的字节数
	offset: 相对于起始位置的偏移
	成功返回读取到的字节数，失败返回-1
	ssize_t pread(int fd, void *buf, size_t count, off_t offset);
4、定位文件
	重新定位的读写位移
	fd: 文件描述符
	offset: 相对于whence的偏移
	whence: 参考位移，SEEK_SET 文件开始，SEEK_CUR 当前位置，SEEK_END 文件结尾
	成功返回当前读写位移，失败返回-1
	off_t lseek(int fd, off_t offset, int whence);
5、拷贝文件描述符
	复制文件描述符,使两个文件描述符都指向同一个file结构体中
	oldfd: 要复制的文件描述符
	newfd: 指定新文件描述符，如果新描述符已经存在则先将其关闭，如果oldfd=newfd则直接返回newfd
	成功返回新的描述符，失败返回-1
	int dup(int oldfd);
	int dup2(int oldfd, int newfd);
6、关闭文件
	关闭一个文件描述符，被关闭的描述符可以被重用
	fd: 要关闭的描述符
	成功返回0，失败返回-1
	int close(int fd)
7、文件截断
	截断文件
	path: 要截断的文件名
	fd: 一个打开的文件描述符
	length: 要截断的长度，如果大于文件长度则用0填充，如果小于文件长度则丢弃额外数据
	成功返回0，失败返回-1
	int truncate(const char *path, off_t length);
	int ftruncate(int fd, off_t length);
